Index
Introduction
Synth MooVier
is a freeware application capable of producing 3-D QuickTimeェ animation.
The
first step you should accomplish is to model the actors
in the scene, by assembling solid primitives, and setting their attributes, like
position, dimension, color,
material properties.
Some special primitives allow you to control the scene
illumination, by positioning multiple lights, and setting their color or type (point,
directional and spot lights are provided).
Another special primitive
is the View Camera; during your animation, you can pan, zoom, and move it with
maximum flexibility.
After you built the actors, you should define their parts,
that is, their behaviors along time: in short, you can change
an actors'attribute in a specified
time interval. For example, you can turn a red sphere into green, starting
at 0.5 seconds and ending at 2.0 seconds: the color will be smoothly changed,
with an interpolation process. All the attributes, included geometric values,
material properties and rendering type, can be managed in the same way.
Some
other parameters let you choose the preferred movie quality (in frame per
second, from 1 to 25) and the frame dimensions in pixels.
As a side capability,
Synth MooVier lets you
export your 3-D scene in VRML format (1.0 compliant), for browsing it with a
VR browser of your choice; the resulting file corresponds to a fixed (user-selected)
instant in your animation.
For a quick look at movie quality, you
can check the movies in the Examples folder (see Quick Start).
What's new in 2.0
For the aficionados of Synth MooVier, this is a list of major improvements over
old (1.5.x) versions:
Hardware/Software
requirements
Macintosh model with 68020
processor or better (FPU not
required);
8-bit/256 colors video card (16-bit/thousands recommended);
768 kb of free RAM (1Mb recommended);
MacOS 6.0.7 or better (7.x
recommended);
QuickTime 1.5 or better.
The application has been
extensively tested on an LC 4/40 with 512Kb VRam and no FPU, and it's quite usable
on that machine.
Quick
Start (Examples folder)
This chapter explains how to compile
the examples in the Examples
folder to obtain the corresponding movies. After that, a brief description of
each example is given.
To compile movies from the Synth MooVier docs included
in the "Examples" folder, execute the following steps:
1) launch
Synth MooVier;
2) open the File menu and select Open...: look for the desired
file;
3) open the Movie menu and select Setup...: choose quality and
frame dimensions;
4) re-open the Movie menu and select Make...: rename the destination
document and wait for
Synth MooVier to finish (a progress window shows every frame as it's created);
5)
switch to the Finder;
6) launch a viewer application and see the results
(double-clicking the movies launches Apple Movie Player, if installed).
If
you have a slow machine (like my LC...), you can make a preview movie by selecting
Make preview... in step 4).
Remember that Synth MooVier doesn't release
your Mac attention while it's "MooVing". So, be patient...
Here
is a brief description of the
documents:
Hello World
Miscellanea
of tranformations capabilities of Synth MooVier (geometry, color, rendering
of various solids are changed).
Molecula
Example of lighting capabilities.
Robot
A possible use for multiple coordinate systems.
Giostra
A complete example of
cyclic transformations.
Tutorial
In this
section, we present a step-by-step lesson to produce an example movie. It would
be better to open Synth MooVier and directly execute the steps below (or you
could print this chapter).
1. Open Synth MooVier
Select
the Synth MooVier icon in the Finder window and choose
File - Open or double-click the icon.
You'll be presented with a little splash
window: click the OK button
and three windows should open. Select the window on the right (the tree-window):
in this window, there is a representation of the hierarchical relationship between
the actors in the scene. In an newly created document, only default actors
are present; camera is the view camera through which the scene will be seen;
background is the colored background of the scene; rooT is the world coordinate
system (explained below).
2. Add a new actor
In
the Actor menu, select
the item Parallelepiped from the submenu New>; this will be the floor of
our scene. Put a name of your choice (say 'floor') in the top input field (hereafter
we refer at it as the label field): this is the name by which you'll refer
to your new actor.
The four triplets of input fields below the label represent
the cartesian coordinate (XYZ) of four points that uniquely define the geometric
attributes of parallepiped (for more info, see Actors reference); fill in
the fields with these values:
origin -5 -5 -.1
side 1 10 0 -.1
side 2 0 10 -.1
side 3 0 0 -.2
and click the OK button. The tree window is updated with the
insertion of the new actor, appended below rooT.
3. Verify the geometry
of the scene
Select the central window (stageC)
and click the Apply button. The Stage window on the left will be updated,
showing the floor in wireframe view. Adjust the stage camera by setting the focal
field at 0.025 and clicking
Apply; the field of view is slightly widened. All changes in the stage controls
(camera, point to, focal, T1 and T2) must be explicitly activated by clicking
on the Apply button.
4. Modify actor's attributes
Select
floor in the tree window (a thin rectangular outline show the
currently selected actor). Choose from Actor menu the Modify>Attributes item;
a dialog opens, from which you can set the initial settings for color, rendering
and material attributes. Fill
in the Red, Green and Blue fields each with a value of 155 (an RGB triplet
of 155-155-155 corresponds to a light gray), and click OK.
Select camera (in
the tree window) and choose Modify from the Actor menu: fill in the position fields
with 10 10 5, to align the camera actor with what you see in the stage
window.
5. Preview the final result
From
the stage window, you can verify only the geometry of the scene. To have a true
preview of what your movie will
look like, choose from the Window menu the Goto... item. Set off the quick toggle
button and click the Go button: the floor appear.
6. Add other
actors
Select the tree window, choose New>Sphere
from Actor menu, name it 'Sphere' and set the ray to .9 and subdiv. to 5. Click
OK. Select the Sphere in the tree window, and choose Modify>Attributes from
the Actor menu. In the Attributes dialog, set the color to 255 (Red) 55 (Green)
55 (Blue); from the Render
pop-up, select the Wireframe rendering: click OK.
Clicking Apply in the stageC
window will confirm the insertion of Sphere in the scene.
Clicking Go in
the Goto window will show a faithful preview of the movie.
Now, let's rapidly
add a Pyramid (Actor-New>Pyramid) with base 3 .5 0, top 3 .5 1.5, ray
.8, 8 sides, plane XY; change its color attributes (Actor-Modify>Attributes)
to 55 155 255.
7. Add a user defined coordinate system
Now,
we want to
add a cube to the scene, but we need to insert it in a separate coordinate system
(we'll see why in the section 13). In order to do that, select New>Coord;System
from the Actor menu, set the origin to 0 3.5 0, and confirm with OK.
Note that in the Stage window (after you clicked Apply), the new coordinate system
is shown as three perpendicular dotted lines. Select the new system in the
tree window (click on its icon, and it will framed with a thin black square);
add a parallelepiped, changing
only its origin in -.5 -.5 0: name it cube; set its color to 55 255 55. The
cube should be appended in the tree window under the new coordinate system. Check
the stage window (Apply). Check the Goto window (Go). Given we haven't defined
some light yet, Synth MooVier gently puts a standard light in the point of
view (camera origin).
8. Improve the illumination
Select
rooT in the tree window, and add a light (confirm the default
values). Refresh the Goto window
and see the difference. The light is shown in the Stage window too, but you
should set the focal to 0.02 and the origin to -10 -10 5. The circle represents
the light source, and the line joins the source with the point to what the light
aims.
9. Animate the pyramid geometry
Select
the Pyramid in the tree window. Choose from the menu Actor the item
Show Parts; the Part window opens. Select Actor-Add Part>Geometry: in the opened
dialog, you must set the desired
geometric transformation for the actor. Set the top fields to 4 .5 1;
in this way, you instruct the application to move the top vertex of the pyramid
to the new location, starting at instant 0 (the start field) and in an interval
of 1 second (the duration field); click OK. You should see the new part in the
Part window.
In the Stage window, you could verify the behaviour of the actor
in two different instants: set the T1 field to 0 and the T2 field to 1: click
the Apply button; you can see
that the actors whose geometry doesn't change from T1 to T2 are drawn in yellow,
while the pyramid is shown in the two position, corresponding to T1 (orange)
and T2 (green).
Now select the Goto window: note that the scrollbar at the
bottom is now enabled, because adding the part causes the movie to span a range
between 0 and 1, and the scrollbar lets you select the particular instant to
preview; the label time shows the currently selected instant. Move the scroll thumb
to the end (time: 0:1.00)
and click the Go button: you see that the pyramid is now skewed, with a shift that
corresponds to the part you defined.
To restore the pyramid position, choose
Actor-Add Part>Geometry, and fill only the start field with the value 1;
in this way, you're stating that the pyramid will resume its original position
in one second, starting at instant 1.
10. Animate the cube color
Select
the Cube in the tree window. Select Actor-Add Part>Color:
in the opened dialog, you must
set the desired color transformation for the actor. Change the Red field to 255
and the duration to 2; this means that your cube will turn to yellow in two seconds,
starting at instant 0. Color parts could be verified only in the Goto window:
check it.
11. Animate the sphere rendering
Select
the Sphere in the tree window. Select Actor-Add Part>Render: in the opened dialog,
choose Flat from the pop-up menu and set start to 1; this means the sphere
will change its rendering type
to flat at instant 1 (for render parts, duration is not meaningful). Again,
you could check in the Goto window the difference before and after instant 1 (actually,
the render is changed only after 1).
Add another render part with start
2 and rendering Phong.
12. Animate the sphere material
Select
the Sphere and choose Actor-Add Part>Material. From the pop-up menu,
select Shiny: this will change automatically the value in the fields below.
Set start time to 2. This part
will gradually change the material of the sphere from Plastic to Shiny, making
the specular reflection sharper.
13. Animate the cube coordinate system
Now
we'll see why the cube was put in its own coordinate system:
we want it to rotate about its Z axis. Select coordSys in the tree window, and
choose Actor-Add Part. Set the rotate Z to 180, and the start to 3. In the Stage
or in the Goto window, check the part.
14. Animate the light
To
simulate a gentle
fading of the light, select it in the tree window, choose Actor-Add Part>Geometry
and set the intensity to 25; set start to 3.
15. Make a draft
movie
In order to control the general setting of your movie, you could
create a draft movie, that is, a movie in which all actors are rendered in
wireframe. Select the Movie menu, and the make Preview... item; the Progress window
opens, showing the frame as they are produced. Now you could see the produced
movie with a player of your choice.
16.
Setup the movie
As you see, the frame dimensions
are quite small (160x120). To control the general parameters of the movie,
you should select the Setup... item from the Movie menu. In the setup dialog, you
could change the frame dimensions, the quality in frame per second, and the creator
file type of the movie (the default type makes your movie playable from Apple
MoviePlayer with a double-click from the Finder).
When you save the Synth
MooVier document, setup informations
are saved, too.
17. Make the final movie
Well,
now it's time to produce the final movie. Select the Make... command from Movie menu,
wait a bit (depending from desired dimensions and quality),and voilà, the
movie is done! (Note: if your monitor is set to 8 bit depth - 256 colors, the image
will be dithered; nonetheless, the resulting movie will be 16-bit depth, and
it will show in its full glory on a properly set monitor).
Appendix.
Produce a VRML version of your
scene
If you want to produce a file browsable with a VR browser,
you should open the Goto window, select the instant of interest (with the scrollbar),
and then click the VRML button. A VRML 1.0 Ascii file is produced.
Geometry of the Scene
In order to produce a movie, you must assemble your actors (picking
the appropriate solid primitives, and setting theirs attributes), and position
them on the scene.
All points
are defined in terms of 3-D cartesian coordinate, with the possibility of
creating user coordinate sub-system; a good technique is to group related objects
in the same system, so you'll be able to move them synchronously by modifying
the coordinate system only. Background objects can be put in the default system
(rooT, which you cannot modify).
You can insert any number of child coordinate
system in any system, obtaining a tree-shaped structure (with the coord.
system as nodes and the solids
as leaves); the transformations of every system are relative to those of its father,
and Synth MooVier cumulates them as it traverse the resulting solids hierarchy.
An
actor of type light is treated as a normal actor; to maintain its
position fixed with respect to the scene you should put it in rooT reference system.
If you want it to 'stick' to a particular actor, you can put both in the
same user sub-system and move them together by moving only the reference system.
In
order to achieve a good
quality in your movies, you must careful choose an appropriate view of the scene:
this is accomplished by setting parameters for the view camera. You can control
all camera setting over time defining appropriate transformation of them
(like changing the point of view, the focus, rotating the camera, or zooming in/out);
for every transformation, you must define a part, for example "set focal
length from actual value to .050 (50 mm) in 2 seconds starting at instant 3.5".
Note that camera coordinates
always refer to rooT system.
Menu
Reference
Apple -
About Synth MooVier... - opens a dialog
with some info about the application and essential credits.
File
-
New - opens a new, empty document.
Open... - opens a Synth MooVier
document.
Close - closes the current document.
Save - saves the current
document.
Save As... - saves a copy of the current document asking user
for a new name.
Quit - exits
from Synth MooVier.
Edit -
Undo - currently not implemented.
Cut
- removes current tree selection putting it in the private clipboard.
Copy
- copies current tree selection in the private clipboard.
Paste
- inserts the content of the private clipboard in the active coordinate system,
and clears the clipboard.
Clear - deletes current tree selection.
Movie
-
Setup... - opens a setup dialog window to set movie attributes
for the active document,
like frame dimensions, quality (frame per second), and creator file type (default
corresponds to Apple MoviePlayer).
Make... - creates a movie from the active
document, asking for a time selection of interest.
make Preview... - same as
Make..., but actors'rendering mode is forced to wireframe.
Window
-
Goto - opens the Goto window.
Tree - opens the Tree window.
Stage
- opens the Stage window and the associated controls window stageC.
Attributes
- opens the modeless
dialog Attributes, from which default values for new actors are set.
Actor
-
New > opens a submenu for creating new actors that
are inserted in the active reference system. Actors'attributes (color, render,
material) are taken from the Attributes dialog, while geometrical data are set
in a modal dialog specific for every solid primitive (sphere, parallelepiped,
prism, cylinder). Special cases of actors are the reference system and the light.
Modify
> if the current
tree selection has no attributes associated (which is the case for reference
system, view camera and background), opens a dialog to modify its geometrical
data at movie start time; otherwise, a submenu with the following choices is presented:
Geometry - opens a dialog to modify actor's geometrical data;
Color - opens a dialog to modify actor's color;
Render
- opens a dialog to modify actor's rendering mode;
Material - opens
a dialog to modify actor's material
settings.
Fold/Unfold - enabled only if a reference system is selected;
it toggles the tree representation corresponding to the system between collapsed
and expanded state.
Clear - removes the current tree selection (a reference
system is recursively removed).
Show Parts - opens the parts window for
the current tree selection.
Add Part > if the current tree selection has
no attributes associated, opens a dialog to add a new part for the actor selected;
otherwise, a submenu with the
following choices is presented:
Geometry - opens a dialog to add
a geometrical part;
Color - opens a dialog to add a color part;
Render - opens a dialog to add a rendering part;
Material - opens
a dialog to add a material part.
Edit Part - opens a dialog to modify the
currently selected part in the parts window.
Remove Part - deletes the currently
selected part.
Window
Reference
Tree
In this
window you can see the hierarchical relations between the actors in your scene.
The
picture shows special actors (camera, background and rooT
reference system), which are always present, and some user defined
actors.
You can see that the current tree selection is framed with
a black rectangle (in this example, 'Sphere' is selected).
The active reference
system (in which new actors
are dropped) is that containing the current selection, and its name is shown in
italic style (in this example, 'rooT').
On the right, you can see a folded
reference system ('coordSys'): note the different icon, suggesting that the system
contains some objects temporarily obscured.
Some shortcuts available in
this window are:
- double-clicking an actor is equivalent to perform the Modify
(> Geometry when applicable) command from Actor menu;
- shift-double-clicking
an actor is equivalent
to select the Modify > Attributes command from Actor menu;
- option-double-clicking
an actor is equivalent to select the Show Parts command from Actor
menu.
Closing this window is equivalent to select the Close command from the
File menu.
Stage
These two windows should help
you in setting the scene of your movie. The Stage window can show a single instant
or two distinct instants
(see below) with a wireframe rendering.
The 'stageC' window (on the right)
lets you set values for the position of the stage view camera (top-left three numeric
input fields) and the point to which the camera aims to (top-right three
fields), expressed in xyz cartesian coordinate, plus the focal length of the camera
('focal' input field);
If you want to see a single instant, the two values
in 'T1' and 'T2' fields must be the same (this is accomplished by setting
them manually, or by activating
the 'Snap' button); in this case, the scene is rendered in a single color (currently
blue).
If you want to compare two distinct instants (for example, to
check the effect of a particular geometric part), you must set the two fields 'T1'
and 'T2' to the values of interest; in this case, the T1 instant scene is drawn
in dark-orange, the T2 scene in green, and the pieces not changed from T1
to T2 are drawn in yellow. In the above example, the pyramid on the left is drawn
at instant 0.0 (orange) and
at instant 1.0 (green); its base is yellow because it doesn't change in this interval.
In
any case, the 'Stage' window (on the left) is updated by an explicit
activation of the 'Apply' button.
Also note that objects in folded reference
system aren't shown in the window, so you can easily hide objects currently
not of interest.
The view camera is shown like a small segment, whose length
is proportional to the focal length.
The light sources are shown like a circle
(source) and a line joining
the light with the point it aims to.
The coordinate systems are represented
by three perpendicular dotted lines.
Attributes
Initial setting of attributes for new
actors are controlled in this window.
The three top input fields
are the RGB components of the actor (range 0-255); the color is shown in the
rectangle on the left.
The 'Render' pop-up menu lets you select rendering
type for the new actor.
The
'Material' pop-up menu lets you select from some predefined set of values for material
attributes, that are put in the 'light coeff.' fields at the bottom; this
fields are editable separately, if you want to customize material properties.
Their meaning is:
'ambient' - portion of ambient light reflected from object
surface (useful range: 0.0 - 1.0)
'diffuse' - set this to high values
to simulate dull surfaces (useful range: 0.0 - 1.0)
'specular' - set this
to high values to simulate shiny
surfaces (useful range: 0.0 - 1.0)
'specExp' - set this to high values
for sharp, focused specular highlight; set low for a broad, gentle falloff (useful
range: 1.0 - 10.0)
As a rule of thumb, the sum of the first three values
should be near 1.0.
Goto
In
this window you can see the preview of a single frame of your
movie.
The scrollbar at the bottom let you select the desired instant (it's
shown under the 'time:' label,
expressed in minute:second).
If the checkbox 'quick' is checked, the actors
are rendered in wireframe mode, much faster: this is useful if you only want
to check the general view.
The 'Go' button perform the effective rendering
of the single frame.
The 'Vrml...' button lets you export the selected instant
in a VRML file (1.0), viewable with a VR browser of your choice.
Part
This
window
shows the parts associated with a particular actor.
The line at the top
shows in textual form the values of the parameters for the currently selected part.
Below
that, a simple ruler shows the temporal extension of the parts (in
seconds).
Every part is represented by a black segment; the selected part
is framed with a black line.
The red dotted vertical line shows the current
temporal extension of the movie (that is, the extension of the parts defined for
the movie).
When the actor
has geometrical data and other attributes associated, a green dotted horizontal
line acts as separator for the different sections (geometry, color, render and
material, in the order).
Setup
In this dialog, you set some general movie parameters,
like frame width and height, the rate of frame per second, and the creator file
type. The latter is used to associate your movie with a player application (default
corresponds to Apple Movie
Player).
Progress
This window is automatically
presented to you when you are making a movie.
It provides you with a feedback
on the mooving process, presenting information like current frame, its
number, elapsed time from start and expected time for completion.
During the
process, you cannot use your Mac in any other activity, but you are pleased by
the presence of an old classic watch cursor.
Actors
Reference
This section explains the parameters
presented in dialogs in order to modify the initial settings of the actors
and to set their parts.
View Camera
This is a special
actor: you cannot delete it.
The attributes are:
position - XYZ coordinate
of the camera;
point to: - XYZ coordinate of the point you want to
look at;
pan - rotation (in degrees) of camera about Z axis;
tilt - rotation
of camera about X axis;
focal - focal length of the camera (0.035 = 35 mm).
Note that a change
in position and point to: fields causes pan and tilt to be recalculated accordingly,
and viceversa, so you could choose which way you prefer. All XYZ coordinates
are defined in rooT system.
Background
This is
a special actor: you cannot delete it.
The attributes are:
red, green,
blue - RGB components of desired background color for the scene (range 0-255).
Reference
System
'rooT'
is a special actor: you cannot delete nor modify it.
The
attributes of the user defined system are:
origin - XYZ coordinate of the
reference system's origin;
rotate - angle of rotation about X, Y, Z axis.
Sphere
The
attributes are:
center - XYZ coordinate
of the center of the sphere;
ray - sphere's ray;
subdivisions -
used in wireframe and flat rendering, to segment the sphere in facets.
Parallelepiped
For
this solid, you must define 4 points (XYZ), representing four vertices that
uniquely identify the parallelepiped (see figure).
Note that the coordinate of the three sides are given relative
to the origin (P1 in the figure).
Prism family
(prism, pyramid, trunc pyramid, cylinder, cone, trunc cone)
All these
solids share a common set of geometrical attributes.
base - XYZ coordinate
of the center of bottom base;
top - XYZ coordinate of the center of top base (for prism, cylinder and
trunc solids) or of top vertex (for cone and pyramid);
ray - ray of the circunscribed
circle of bottom base;
sides - number of lateral sides for faceted
solids: for cone and cylinder, it's used only in wireframe and flat rendering,
to segment them;
plane - plane in which bottom and top base lie;
t/b ratio - present only for trunc solids: represents the ratio between top-base
and bottom-base ray.
Light
The
attributes are:
type - you choose from point,
parallel (directional) and spot;
position - XYZ coordinate of the light;
direction - XYZ coordinate of the point to what the light aims (not meaningful
for point light);
intensity - illumination power;
angle - opening
angle of flaps for spot type.
Note that for a light, setting its rendering
type to invisible is equivalent to turning it off.
Bugs & Limitations
This list doesn't pretend
to be exhaustive; it merely points out the more evident facts, and it's given
in order to avoid dissatisfied customers.
- Synth MooVier user interface
is far from friendly: input methods are numerical, and to achieve good results
you should adapt yourself to the application's "philosophy".
- Performance
are less than optimal; currently, the application doesn't require an FPU, nor
it takes advantage of it, if present.
-
There is no online-help; Undo is not supported.
- Import capabilities
are absent, and export is limited to VRML.
- The rendering algorithm fails
in presence of compenetrating objects (the results in this case should be
unpredictable; actually, they are predictable, because you can anticipate
they'll be wrong). When you see strange effects (like a frontmost solid
drawn behind the others), double check your scene to be sure that none of the
actors compenetrates each other.
-
The clipping method is not very accurate, and objects partially visible
in the scene can be (under particular conditions) totally ignored from the render
engine.
- The ratio of the camera view plane is fixed (4:3), so you should
keep frame dimensions with the same ratio, otherwise the objects will appear
distorted.
- A maximum of 16 light sources is considered during rendering.
-
A maximum of 256 actors can be present in the scene.
Here are some wise
tips:
- Sphere objects are
time consuming: use them only when needed (well, I'm speaking from my point
of view - LC 68020; perhaps this is not an issue to you).
- The more lights
you use, the more time you need to render a frame (with Phong rendering, this fact
is more apparent); spot lights are especially expensive.
Future Plans
This application
is the result of an amatorial effort. Though I enjoy very much programming
(especially on Macintosh),
I can dedicate to this activity only my (very limited) spare time.
Anyway, these
are the points of possible future improvements:
Acknowledgments
A big thank to my family, whose patience
has permitted this work. Thanks
you, Lucia, Michela, Simona, Daniele and Giacomo (ordered by age).
Special
credit is due to Roberto Leonardi, whose kind observations had convinced me
to enhance this application from the primitive 1.0 status to 1.5.
Thank you,
Fred, for introducing me to the world of ftp in the late 1993.
I'd like to
mention also Marco Piovanelli, whose MModal Pascal unit saved me a lot of time,
and Yves Piguet, whose clip2gif helped in producing the document you're reading.
The Author
Synth MooVier has been
developed by Marco Bonasoro, an italian programmer.
Marco is 30 years old,
has a degree in Computer Science from Milan University, and his thesis was a
sort of 'ante litteram' work on Virtual Reality.
He works in a research center,
where his activities encompass anything that involves a keyboard and a mouse,
like C programming on UNIX-Motif workstations, VB programming on (urgh!) Wintel
machines, and FORTRAN programming
on VMS.
One notable exception to the above statement is the lack of Macintosh,
but Marco addresses this point at home, especially in the interval from
the 9:30 pm (this is when he usually manages to bring to bed Michela, Simona,
Daniele and Giacomo, respectively 7, 6, 4 and 3 years old) to the 10:30 pm (when
he usually no longer manages to keep an eye open, and his wife Lucia brings
him to bed :-).
His address is:
Marco Bonasoro
via Pertini,
24
20097 San Donato
Milanese (MI)
ITALY
Legal Stuff
Permission to copy and distribute
this software is hereby granted, as long as the following conditions are
met:
1) the application must be distributed free of charge,
or at the sole transmission or duplication cost;
2) the package must be distributed
in its entirety, with
no modification and with all documents annexed;
3) you may include the Software
on a CD-ROM or floppy collection, provided that a complimentary copy is sent
to the Author.